"""
进程>线程>协程
协程：耗时操作
耗时操作： 网络请求，网络下载，io操作
协程需要用生成器

进程，线程，协程的区别：
    进程:计算机中资源分配的最小单位
    线程：计算机中cpu调度的最小单位
    协程：又称‘微线程’，在计算机中不是真实存在，而是通过程序员写代码伪造出来的

    一个线程中可以有多个线程，一个线程中又可以创建多个协程，在cpython还有一个GIL锁，全局解释器（通过时刻一个进程中
    只有一个线程可以被cpu调度），由于GIL的存在，导致python中：计算密集型用进程，IO密集型又线程（协程）
"""
import time


def task1():
    for i in range(3):
        print('A', str(i))
        yield
        time.sleep(1)


def task2():
    for i in range(3):
        print('B', str(i))
        yield
        time.sleep(2)


if __name__ == '__main__':
    g1 = task1()
    g2 = task2()
    while True:
        try:
            next(g1)
            next(g2)
        except:
            break
